home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 12: Textmags & Docs / nf_archive_12.iso / MAGS / SOURCES / ATARI_SRC.ZIP / atari source / BODI / STUFFPTR.S < prev    next >
Encoding:
Text File  |  2001-02-10  |  2.3 KB  |  141 lines

  1. *    Assembly language module to handle low level screen operations
  2. *
  3. *
  4. false equ 0
  5. true  equ $FFFF
  6. GOGstuff equ false
  7.  
  8.     .globl    _stuffpt
  9.     .globl  _lineai
  10.     .globl  _lineav
  11.     .globl    _setvdi
  12.     .globl  _fixvdi
  13. .ifne GOGstuff
  14.     .globl  _f_move
  15.     .globl  _r_move
  16.     .globl    _Lf_move
  17. .endc
  18. *
  19. _stuffpt:
  20.     move.l    4(sp),a0
  21.     move.l    8(sp),a1
  22.     move.l     (a0),(a1)
  23.     rts
  24.  
  25. *
  26. *    Line A init code 
  27. *
  28. *
  29. _lineai:
  30.     dc.w    $a000            * Init lineA
  31.     move.l    a0,_lineav
  32.     rts
  33. *
  34. *   Set up vdi variables for making image mask
  35. *
  36. *        4(sp)    - width of new screen
  37. *        6(sp)    - height of new screen
  38. *        8(sp)   - width of screen in bytes
  39. _setvdi:
  40.     move.l    _lineav,a0
  41.     lea    save_vars,a1
  42.     move.w    -780(a0),(a1)+
  43.     move.w    -774(a0),(a1)+
  44.     move.w    -772(a0),(a1)+
  45.     move.w    -692(a0),(a1)+
  46.     move.w    -690(a0),(a1)+
  47.     move.w    -666(a0),(a1)+
  48.     move.w    -622(a0),(a1)+
  49.     move.w    -614(a0),(a1)+
  50.     move.w     -12(a0),(a1)+
  51.     move.w      -4(a0),(a1)+
  52.     move.w      -2(a0),(a1)+
  53.     move.w        (a0),(a1)+
  54.     move.w       2(a0),(a1)
  55. *
  56.     move.w    #1,-780(a0)
  57.     move.w    #1,-774(a0)
  58.     move.w    #0,-772(a0)
  59.     move.w    4(sp),-692(a0)
  60.     sub.w    #1,-692(a0)
  61.     move.w    6(sp),-690(a0)
  62.     sub.w    #1,-690(a0)
  63.     move.w    #2,-666(a0)
  64.     move.w    #0,-622(a0)
  65.     move.w    #0,-614(a0)
  66.     move.w     4(sp),-12(a0)
  67.     move.w     6(sp),-4(a0)
  68.     move.w     8(sp),-2(a0)
  69.     move.w     #1,(a0)
  70.     move.w     8(sp),2(a0)
  71.         rts
  72. *
  73. _fixvdi:
  74.     move.l    _lineav,a0
  75.     lea    save_vars,a1
  76.     move.w    (a1)+,-780(a0)
  77.     move.w    (a1)+,-774(a0)
  78.     move.w    (a1)+,-772(a0)
  79.     move.w    (a1)+,-692(a0)
  80.     move.w    (a1)+,-690(a0)
  81.     move.w    (a1)+,-666(a0)
  82.     move.w    (a1)+,-622(a0)
  83.     move.w    (a1)+,-614(a0)
  84.     move.w    (a1)+,-12(a0)
  85.     move.w    (a1)+,-4(a0)
  86.     move.w    (a1)+,-2(a0)
  87.     move.w    (a1)+,(a0)
  88.     move.w    (a1)+,2(a0)
  89.     rts
  90. *
  91. *
  92. .ifne GOGstuff
  93. _f_move:
  94.     move.l    4(a7),a0
  95.     move.l    8(a7),a1
  96.     move.w    12(a7),d0
  97.     subq.w    #1,d0
  98.     bmi    f_mvexit
  99. f_mvlp:
  100.     move.b    (a0)+,(a1)+
  101.     dbra    d0,f_mvlp
  102. f_mvexit:
  103.     rts
  104. *
  105. *
  106. _r_move:
  107.     move.l    4(a7),a0
  108.     move.l    8(a7),a1
  109.     move.w    12(a7),d0
  110.     subq.w    #1,d0
  111.     bmi    r_mvexit
  112.     adda.l    #1,a0
  113.     adda.l    #1,a1
  114. r_mvlp:
  115.     move.b    -(a0),-(a1)
  116.     dbra    d0,r_mvlp
  117. r_mvexit:
  118.     rts
  119.  
  120.  
  121. *
  122. _Lf_move:
  123.     movea.l    $4(a7),a0    * Source
  124.     movea.l    $8(a7),a1    * Destination
  125.     move.l    $C(a7),d0    * count
  126.  
  127. lf_next:
  128.     tst.l    d0
  129.     beq.b    lf_exit
  130.     move.b    (a0)+,(a1)+
  131.     subq.l    #1,d0
  132.     bra.b    lf_next
  133. lf_exit:
  134.     rts
  135. .endc
  136.  
  137. *
  138. .bss
  139. save_vars:    .ds.w    14
  140. .end
  141.